import base64
import os


def decode_base64_to_image(base64_data, output_path):
    """
    将 Base64 编码的数据转换为图片文件。

    参数:
        base64_data (str): 包含 Base64 数据的字符串，可以是纯 Base64 编码，也可以是 data URI 格式。
        output_path (str): 图片文件的输出路径。

    返回:
        bool: 如果转换成功返回 True，否则返回 False。
    """
    try:
        # 检查是否为 data URI 格式
        if base64_data.startswith('data:'):
            # 提取 MIME 类型和 Base64 数据
            parts = base64_data.split(',', 1)
            if len(parts) != 2:
                print("错误: 无效的 data URI 格式")
                return False

            # 获取 Base64 数据部分
            base64_data = parts[1]

        # 解码 Base64 数据
        image_data = base64.b64decode(base64_data)

        # 确保输出目录存在
        output_dir = os.path.dirname(output_path)
        if output_dir and not os.path.exists(output_dir):
            os.makedirs(output_dir)

        # 写入图片文件
        with open(output_path, 'wb') as f:
            f.write(image_data)

        print(f"成功: 图片已保存到 {output_path}")
        return True

    except base64.binascii.Error:
        print("错误: 无效的 Base64 编码")
        return False
    except Exception as e:
        print(f"错误: 发生未知错误 - {e}")
        return False


# if __name__ == "__main__":
#     # 示例 1: 处理纯 Base64 编码数据
#     base64_str = "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="
#     decode_base64_to_image(base64_str, "output1.png")
#
#     # 示例 2: 处理 data URI 格式的数据
#     data_uri = ""
#     decode_base64_to_image(data_uri, "output2.png")